﻿using Cash.DialogFroms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CashCommon;
using System.Windows.Forms;
using Cash.Model;

namespace Cash
{
    public static class MainMenuEvents
    {
        /// <summary>
        /// Закрытие основной формы приложения
        /// </summary>
        public static void OnMainFormClose(object sender, EventArgs e)
        {
            Tools.MainForm.Close();
        }

        /// <summary>
        /// Отркытие в диалоговом режиме формы коннекции к базе
        /// </summary>
        public static void OnLoginFormShow(object sender, EventArgs e)
        {
            if (Builder.FormConnect.ShowDialog() == DialogResult.OK)
            {
                CashEmployer.Inst.Init(Builder.DB.Login);

                FormMain formMain = Tools.MainForm as FormMain;
                if (formMain != null)
                    formMain.FormRefresh();
            }
        }

        /// <summary>
        /// Закрытие текущей коннекции
        /// </summary>
        public static void OnConnectionClose(object sender, EventArgs e)
        {
            // Закрываем все MDI-формы
            Form[] result = (from Form form in Application.OpenForms where form.Parent != null select form).ToArray<Form>();
            for (int i = result.Count() - 1; i >= 0; i--)
                result[i].Close();

            Builder.DB.Close();

            FormMain formMain = Tools.MainForm as FormMain;
            if (formMain != null)
                formMain.FormRefresh();

        }

        /// <summary>
        /// Открытие формы списка документов
        /// </summary>
        public static void OnDocumentsFormShow(object sender, EventArgs e)
        {
            FormDocuments formDocuments = new FormDocuments();
            Tools.OpenMdiForm(formDocuments, Tools.MainForm);
        }

        /// <summary>
        /// Отркытие в диалоговом режиме формы "Операции со счетом"
        /// </summary>
        public static void OnFormAccountShow(object sender, EventArgs e)
        {
            FormAccountOperation formAccountOperation = new FormAccountOperation();
            foreach (Form form in Tools.DocumentsForm())
            {
                FormDocuments formDoc = form as FormDocuments;
                if (formDoc != null)
                    formAccountOperation.OnCheckPosted += new DlegateWithoutParams(formDoc.OpenDefault); 
            }
            formAccountOperation.ShowDialog();
        }

        /// <summary>
        /// Отркытие в диалоговом режиме формы "Операции с кассой"
        /// </summary>
        public static void OnFormCashShow(object sender, EventArgs e)
        {
            new FormCashOperation().ShowDialog();
        }

        /// <summary>
        /// Отркытие в диалоговом режиме формы "Проведение документов"
        /// </summary>
        public static void OnFormPostInOmnisShow(object sender, EventArgs e)
        {
            FormMain formMain = Tools.MainForm as FormMain;
            if (formMain != null)
                formMain.PrintDialogShow();
        }

        /// <summary>
        /// Отркытие в диалоговом режиме формы "О программе"
        /// </summary>
        public static void OnFormAboutCashShow(object sender, EventArgs e)
        {
            new FormAboutCash().ShowDialog();
        }

        /// <summary>
        /// Получение доступа к справке. Файл справки должен иметь расширение chm и называться так же, как называется приложение
        /// </summary>
        public static void OnHelpOpen(object sender, EventArgs e)
        {
            Tools.GetHelp("Inf_common", HelpNavigator.Topic);
        }

    }
}
